package com.tbit.main.dao.core;

import com.tbit.main.pojo.Battery;
import com.tbit.main.pojo.BatteryGroupReturn;
import com.tbit.main.pojo.PowerChangeLogSta;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author LMY
 * @create 2021-05-27 13:42
 * 电池管理
 */
public interface BatteryDao {

    /**
     * 根据电池编号批量查询
     *
     * @param map
     * @return
     */
    List<Battery> getBatteryNOs(Map<String, Object> map);

    /**
     * 修改电池编号状态
     *
     * @param map
     */
    void updateState(Map<String, Object> map);

    /**
     * 修改电池编号状态
     *
     * @param map
     */
    void updateIdState(Map<String, Object> map);

    /**
     * 修改电池编号状态
     *
     * @param map
     */
    void updateIdStateCode(Map<String, Object> map);


    /**
     * 根据运营区域查询
     *
     * @return
     */
    Battery getByNO(String batteryNO);

    /**
     * 按时间分组统计
     *
     * @param params
     * @return
     */
    List<PowerChangeLogSta> groupByTime(Map<String, Object> params);

    /**
     * 根据时间查询
     *
     * @param params
     * @return
     */
    List<Battery> getByTime(Map<String, Object> params);

    /**
     * 添加
     *
     * @param battery
     */
    void insert(Battery battery);

    /**
     * 根据运营区域查询
     *
     * @param map
     * @return
     */
    List<Battery> getByAccountId(Map<String, Object> map);

    /**
     * 根据运营区域查询
     *
     * @param map
     * @return
     */
    Integer getByAccountIdCount(Map<String, Object> map);


    /**
     * 根据运营区域，人员查询
     *
     * @param map
     * @return
     */
    List<Battery> getByAccountIdReturn(Map<String, Object> map);

    /**
     * 查询丢失电池
     *
     * @param accountId
     * @return
     */
    List<Battery> getByAccountIdLose(Integer accountId);

    /**
     * 根据电池id查询
     *
     * @param batteryId
     * @return
     */
    Battery getBatteryId(Integer batteryId);

    /**
     * 删除
     *
     * @param batteryId
     */
    void del(Integer batteryId);

    List<Battery> getAll();

    /**
     * 根据区域查看电池状态分组
     */
    List<BatteryGroupReturn> stateGroup(Integer accountId);

    /**
     * 根据区域查看人员状态分组
     */
    List<BatteryGroupReturn> userIdGroup(Integer accountId);

    /**
     * 根据车辆id查询
     */
    Battery getByMachineId(@Param("machineId") Integer machineId);

    /**
     * 根据id查询
     */
    List<Battery> getByMachineIds(@Param("machineIds") String machineIds);

    /**
     *
     */
    List<Battery> getNotGroup(Integer accountId);
}
